# 1、写函数,将传入的列表或元祖对象的奇数位索引对应的元素,
# def biu(a):
#     return a[1::2]
# mlist = [1,2,3,4,5]
# result = biu(mlist)
# print(result)

# 2、写函数,判断用户传入的对象(string,list,tuple)长度是否大于5
# def biu(a):
#     if len(a) > 5:
#         return("长度大于5")
#     elif len(a) < 5:
#         return("长度小于5")
# my_list = [1, 2, 3, 4, 5, 6, 7]
# result = biu(my_list)
# print(result)

#
# 3、写函数,计算传入的string中,数字,字母,空格以及其它内容的个数,并返回结果
# def biu(a):
#
#     nums = 0
#     words = 0
#     tab = 0
#     others = 0
#     for i in a:
#         if i in '1234567890':
#             nums +=1
#         elif i in 'abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ':
#             words += 1
#         elif i ==" ":
#             tab +=1
#         else:
#             others +=1
#     return f"数字有{nums},字母有{words}，空格有{tab}，其他有{others}"
# print(biu("alskdh5as4d674fd6g ./[]\df./d]\fg45"))


#
# 4、写函数,接收两个数字参数,返回较大的那个数字
# def biu(a,b):
#     if a>b:
#         return a
#     elif b>a:
#         return b
# print(biu(1,100))
#
# 5、编写一个函数cacluate, 可以接收任意多个数,返回的是一个元组.
# 元组的第一个值为所有参数的平均值, 第二个值是大于平均值的所有数.


#
# 6、编写一个函数, 接收字符串参数, 返回一个元组,
# 元组的第一个值为大写字母的个数, 第二个值为小写字母个数.
# def biu(a):


# 7、编写函数, 接收一个列表(包含30个1~100之间的随机整形数)
# 和一个整形数k, 返回一个新列表.
# 函数需求:
# 将列表下标k之前对应(不包含k)的元素逆序;
# 将下标k及之后的元素逆序;

#
# 8、编写函数，从键盘输入参数x和n，计算并显示形如x+xx +xxx + xxxx + xxxxx+xxx…xxx+ 的表达式前n项的值
# def eat(x,n):
#     result = 0
#     b = str(x)
#     for i in range(1, n + 1):
#         result += int(b)
#         b += str(x)
#     return result
# x = 5
# n = 5
# result = eat(x,n)
# print(n,result)

# 9、写函数,函数接收的4个参数分别是:姓名,性别(默认为男),年龄,地址
#
# 用户通过input输入这4个内容(支持持续输入,Q或q退出),并传递给函数
#
# 函数接收到这些内容,将其追加到student_msg文件中
#
# 重点:复习文件操作
# def use_info():
#     while True:
#         name(input('姓名'))
#         if name == q or name ==Q:
#             break
#         xingbie('男')
#         age(input(int('年龄')))
#         if age == q or name == Q:
#             break
#         adress(input('地址'))
#         if name == q or name == Q:
#             break
#         use_info(f"{name},{xingbie},{age},{adress}\n")
#         with open("user_info.txt", "a") as file:
#             file.write(info)
#         print('成功')


# 10、写函数,接收n个数字,返回这些数字的和(动态传参)
# def counts(*a):
#     return sum(*a)
# a = 23417464668564
# print(counts)

# 11、在实参中传入多个可迭代对象(要有string,list,tuple,set,dict),将每个对象的每个元素都加到args或kwargs里

# 12、写函数,把传过来的列表中的每一个元素都用"_"拼接,并返回
# def list1(ls):
#     result = '_'.join(ls)
#     return result
# list2 = [1,2,3]
# result = list1(list2)
# print(result)
# 13、写函数,传入一个数字,返回这个数的阶乘
# 重点:累乘
#
# 示例：1x2x3....
# def multiply(n):
#     result = 1
#     for i in range(1,n+1):
#         result *= i
#     return result
# print(multiply(6))

#
# 14、写函数,返回一个扑克牌列表,里面有52项,每一项都是一个tuple

#
# 15、用代码写一个99乘法表
# def jj():
#     for i in range(1,10):
#         for j in range(1,i+1):
#             print(f"{j}*{i}={i * j}", end='\t')
#         print()
#
# jj()

# 16、编写函数，求1+2+3+…N的和
# def plus(n):
#     nums = 0
#     for i in range(1,n+1):
#         nums += i
#     print(nums)
# plus(5)

# 17、编写一个函数，求多个数中的最大值\
# def max1(*n):
#     n = list(n)
#     print(n)
#     max1 =0
#     for i in n:
#         if i > max1:
#             max1 = i
#     print(max1)
# max1(4,854,8,5,748,456,7485,7)
#
# 18、编写一个函数，提取指定字符串中所有的字母，然后拼接在一起产生一个新的字符串

#
# 19、 定义一个学生注册函数enroll()，打印学生姓名，性别，年龄，城市， 使用默认参数降低调用函数的复杂度

#
# 20、编写一个函数，接受一个字符串作为参数，并返回其中所有单词的首字母的大写形式
#
# 21、写一个函数，求多个数的平均值
# def avg(*a):
#     total = sum(a)
#     avg1 = total / len(a)
#     return avg1
# result = avg(1,2,3)
# print(result)
#
# 22、写一个自己的len函数，统计指定序列中元素的个数
# def len1(*a):
#     count=0
#     if i in a:
#         count+=1
#     return count
# result = len1[1,2,3]
# print(result)
#
# 23、找出传入的列表或元组的奇数位对应的元素，并返回一个新的列表
#
# 24、编写一个函数，接受一个字符串列表作为参数，并返回一个字符串，其中包含所有字符串首字母的大写形式
#
# 25、定义函数，有一个形参，传入的是列表，数组大小不超过 100个，
# # 数组中的每个元素值不允许超过 100，但是可以等于100，
# # 如果列表大小超过了100个截取到第100个为止，要求返回的列表格式：
# def nums(list1):
#     list1 = list1[:101]
#     for i in list1:
#         if list1.count(i) >=100:
#             list1.append(i)
#     print(list1)
#
# list1 = [1,101]
# nums(list1)
#
# # 删除所有重复元素，使得每个元素只出现一次
# def shan(lst):
#     unique_lst = list(set(lst))  # 去除重复元素并转换为列表
#     sort_lst = sorted(unique_lst, reverse=True)  # 按数字大小降序排序
#     return sort_lst
# lst1 = [3, 7, 2, 5, 2, 7, 8]
# result1 = shan(lst1)
# print(result1)  # 输出：[8, 7, 5, 3, 2]
# # 按照数字的大小，由高到低排序返回
#
# 26、定义函数 getLength，打印用户传入的容器类型和数据长度
#
# 27、定义函数 generateNum( )
# # 返回从0~9的十个数字中随机取出4个不重复的数字组成一个字符串
#
# 28、定义函数 moreThan(num)，判断输入的数字是否大于1500
# def morethan(num):
#     if num >1500:
#         print('是')
#     elif num <1500:
#         print('否')
# print(morethan(5))

#
# 29、定义函数，有两个形参，第一个形参到第二个形参的范围，所有平方数之和
#
# 示例：func_a(5,10)
# 5x5+6x6+7x7+8x8+9x9+10x10...
#
# 30、写函数，检查传入字典的每一个value长度，如果大于2，
# # 那么仅保留前两个长度的内容， 并将新内容返回给调用者
#
# 31、写函数，判断用户传入的对象（字符串、列表、元组）的元素是否为空
#
# 32、编写自定义函数，完成一个简单的减法运算函数
# def minus(a,b):
#     return a-b
# print(minus(1,3))
#
# 33、编写自定义函数，可以输出自己的名字即可。
# def name():
#     wo = "gaoyu"
#     print(wo)
# name()
#
# 34、编写自定义函数：剪刀石头布
# 游戏开始，初始状态下用户和电脑都有 100 分，赢一局+10 分，输一局-10 分。
#
# 当用户为 0 分时，游戏结束，提示游戏结束，比赛输了
#
# 当用户为 200 分时，游戏结束，提示游戏结束，赢得比赛、每轮比赛都输出当前的分数
#
# 1 代表剪刀 2 代表石头 3 代表布
#
# 35、编写一个函数，接受一个字符串作为参数，并返回该字符串的逆序字符串
# def fan(str):
#     return str[::-1]
# print(fan("456131"))
#
# 36、编写一个函数，接受一个数字列表作为参数，并返回其中所有偶数的列表
# def o(lst):
#     list1 = []
#     for i in lst:
#        if i%2 == 0:
#            list1.append(i)
#     return (list1)
# print(o([1,2,3,4,5]))
#
# 37、编写一个函数，接受一个字符串列表作为参数，并返回其中最长的字符串。
# def longest(str):
#     longest1 = ''
#     for longest2 in str:
#         if len(longest2)>len(longest1):
#             longest1 = longest2
#     return longest1
# print(longest(['f54g','sdgf6354','aerg','345']))
#
# 38、编写一个函数，接受一个数字列表作为参数，并返回其中所有数字的平方的总和
# def multiply(n):
#     a = 0
#     b = 0
#     for i in n:
#         a = i*i
#         b +=a
#     print(b)
# multiply([1,2,3,4,5])

#
# 39、编写一个函数，接受一个整数作为参数，并返回其阶乘
# def multiply(n):
#     result = 1
#     for i in range(1,n+1):
#         result *= i
#     return result
# print(multiply(6))